﻿package blob.ogmo
{
    import blob.characters.*;
    import blob.levelstates.*;
    import blob.mechanisms.*;
    import org.flixel.*;

    public class OgmoLevel extends Object
    {
        public var xml:XML;

        public function OgmoLevel(param1:String)
        {
            this.xml = new XML(param1);
            return;
        }// end function

        public function loadTiles(param1:FlxTilemap, param2:Class, param3:int, param4:int) : void
        {
            var _loc_5:* = this.xml.Tiles.toString();
            param1.loadMap(_loc_5.replace(new RegExp("-1", "g"), "0"), param2, param3, param4);
            return;
        }// end function

        public function loadSprites(param1:Array, param2:FlxGroup) : void
        {
            var _loc_4:XML = null;
            var _loc_5:int = 0;
            var _loc_6:int = 0;
            var _loc_7:Character = null;
            var _loc_8:int = 0;
            var _loc_9:Mechanism = null;
            var _loc_10:XML = null;
            var _loc_11:Switch = null;
            var _loc_12:int = 0;
            var _loc_13:Mechanism = null;
            var _loc_14:XML = null;
            var _loc_15:ButtonSmall = null;
            var _loc_16:ButtonMedium = null;
            var _loc_17:ButtonLarge = null;
            var _loc_18:MovableBlock = null;
            var _loc_19:uint = 0;
            var _loc_20:Fan = null;
            var _loc_21:Door = null;
            var _loc_3:* = FlxG.state;
            for each (_loc_4 in this.xml.Objects.children())
            {
                
                if (_loc_4.@type == "character")
                {
                    _loc_5 = _loc_4.@x;
                    _loc_6 = _loc_4.@y;
                    if (_loc_4.@size == 1)
                    {
                        _loc_7 = new SmallCharacter(_loc_5, _loc_6);
                        new SmallCharacter(_loc_5, _loc_6).y = _loc_7.y - _loc_7.height / 2;
                        param1.push(_loc_7);
                        _loc_3.add(_loc_7);
                    }
                    else if (_loc_4.@size == 2)
                    {
                        _loc_7 = new MediumCharacter(_loc_5, _loc_6);
                        new MediumCharacter(_loc_5, _loc_6).y = _loc_7.y - _loc_7.height / 2;
                        param1.push(_loc_7);
                        _loc_3.add(_loc_7);
                    }
                    else if (_loc_4.@size == 3)
                    {
                        _loc_7 = new LargeCharacter(_loc_5, _loc_6);
                        new LargeCharacter(_loc_5, _loc_6).y = _loc_7.y - _loc_7.height / 2;
                        param1.push(_loc_7);
                        _loc_3.add(_loc_7);
                    }
                    continue;
                }
                if (_loc_4.@type == "switch")
                {
                    _loc_8 = _loc_4.@buttonid;
                    _loc_9 = null;
                    for each (_loc_10 in this.xml.Objects.children())
                    {
                        
                        if (_loc_10.@type != "switch" && _loc_10.@type != "button" && _loc_10.@buttonid == _loc_8)
                        {
                            if (_loc_10.@type == "door")
                            {
                                if (_loc_9 != null)
                                {
                                    Door(_loc_9).setAfterActivateDoor(new Door(_loc_10.@x, _loc_10.@y));
                                    break;
                                }
                                else
                                {
                                    _loc_9 = new Door(_loc_10.@x, _loc_10.@y);
                                    _loc_3.add(Door(_loc_9));
                                    PlayState(_loc_3).doors.add(Door(_loc_9));
                                }
                                continue;
                            }
                            if (_loc_10.@type == "platform")
                            {
                            }
                        }
                    }
                    _loc_11 = new Switch(_loc_4.@x, _loc_4.@y - 5, _loc_9);
                    _loc_3.add(_loc_11);
                    param2.add(_loc_11);
                    continue;
                }
                if (_loc_4.@type == "button")
                {
                    _loc_12 = _loc_4.@buttonid;
                    _loc_13 = null;
                    for each (_loc_14 in this.xml.Objects.children())
                    {
                        
                        if (_loc_14.@type != "switch" && _loc_14.@type != "button" && _loc_14.@buttonid == _loc_12)
                        {
                            if (_loc_14.@type == "door")
                            {
                                if (_loc_13 != null)
                                {
                                    Door(_loc_13).setAfterActivateDoor(new Door(_loc_14.@x, _loc_14.@y));
                                    break;
                                }
                                else
                                {
                                    _loc_13 = new Door(_loc_14.@x, _loc_14.@y);
                                    _loc_3.add(Door(_loc_13));
                                    PlayState(_loc_3).doors.add(Door(_loc_13));
                                }
                                continue;
                            }
                            if (_loc_14.@type == "platform")
                            {
                            }
                        }
                    }
                    if (_loc_4.@size == 1)
                    {
                        _loc_15 = new ButtonSmall(_loc_4.@x, _loc_4.@y, _loc_13);
                        _loc_3.add(_loc_15);
                        PlayState(_loc_3).collidableMechanisms.add(_loc_15);
                    }
                    else if (_loc_4.@size == 2)
                    {
                        _loc_16 = new ButtonMedium(_loc_4.@x, _loc_4.@y, _loc_13);
                        _loc_3.add(_loc_16);
                        PlayState(_loc_3).collidableMechanisms.add(_loc_16);
                    }
                    else if (_loc_4.@size == 3)
                    {
                        _loc_17 = new ButtonLarge(_loc_4.@x, _loc_4.@y, _loc_13);
                        _loc_3.add(_loc_17);
                        PlayState(_loc_3).collidableMechanisms.add(_loc_17);
                    }
                    continue;
                }
                if (_loc_4.@type == "movableblock")
                {
                    _loc_18 = new MovableBlock(_loc_4.@x, _loc_4.@y);
                    _loc_3.add(_loc_18);
                    PlayState(_loc_3).blocks.add(_loc_18);
                    continue;
                }
                if (_loc_4.@type == "fan" && !("@buttonid" in _loc_4))
                {
                    if (_loc_4.@direction == "left")
                    {
                        _loc_19 = FlxObject.LEFT;
                    }
                    else if (_loc_4.@direction == "right")
                    {
                        _loc_19 = FlxObject.RIGHT;
                    }
                    else if (_loc_4.@direction == "up")
                    {
                        _loc_19 = FlxObject.UP;
                    }
                    else
                    {
                        _loc_19 = FlxObject.DOWN;
                    }
                    _loc_20 = new Fan(_loc_4.@size, _loc_19, 130, _loc_4.@x, _loc_4.@y);
                    _loc_3.add(_loc_20);
                    param2.add(_loc_20);
                    continue;
                }
                if (_loc_4.@type == "door" && !("@buttonid" in _loc_4))
                {
                    _loc_21 = new Door(_loc_4.@x, _loc_4.@y);
                    _loc_3.add(_loc_21);
                    continue;
                }
                if (_loc_4.@type == "platform" && !("buttonid" in _loc_4))
                {
                }
            }
            return;
        }// end function

    }
}
